package beans;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;

import beans.exceptions.NotConnectedException;

import dao.EntityAlreadyExistsException;
import dao.InexistantEntityException;
import entities.Commande;

@ManagedBean
@RequestScoped
public class CommandeBean {
    
    @ManagedProperty(value = "#{mainBean}")
    private MainBean mainBean;
    
    @ManagedProperty(value = "#{sessionBean}")
    private SessionBean sessionBean;
    
    private Integer quantity;
    
    private Integer idProduit;

    
    public Integer getQuantity() {
        return quantity;
    }

    public void setQuantity(Integer quantity) {
        this.quantity = quantity;
    }

    public Integer getIdProduit() {
        return idProduit;
    }

    public void setIdProduit(Integer idProduit) {
        this.idProduit = idProduit;
    }
    
    public void setMainBean(MainBean mainBean) {
        this.mainBean = mainBean;
    }
    
    public void setSessionBean(SessionBean sessionBean) {
        this.sessionBean = sessionBean;
    }
    
    
    public List<Commande> getCommandes()
    {
        if(mainBean.getPage().equals("listeCommandesClient"))
        {
            try
            {                
                return (List<Commande>) mainBean.getGestionnaire().getCommandesDuClient(sessionBean.getSessionClientId());
            }
            catch(InexistantEntityException e)
            {
                mainBean.setMessage(e.toString());
            }
            catch(NotConnectedException e)
            {
                mainBean.setMessage(e.toString());
                //ne s'affiche pas?
            }
        }
        else
            return (List<Commande>) mainBean.getGestionnaire().getAll(Commande.class);
        
        return null;
    }
    
    public void nouvelleCommande()
    {
        try
        {
            mainBean.getGestionnaire().creerCommande(idProduit, sessionBean.getSessionClientId(), quantity);
            mainBean.setMessage("La commande a été correctement créée.");
            idProduit = null;
            quantity = null;
            
        } catch (InexistantEntityException ex) {
            mainBean.setMessage(ex.toString());
        } catch (EntityAlreadyExistsException ex) {
            mainBean.setMessage(ex.toString());
        } catch (NotConnectedException ex) {
            mainBean.setMessage(ex.toString());
        }
        
        mainBean.setPage("creerCommandeForm");
    }

}
